home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / os2tools / aping / cpicinit.h < prev    next >
Text File  |  1992-06-14  |  10KB  |  204 lines

  1. /*****************************************************************************
  2.  *
  3.  *  MODULE NAME : CPICINIT.H
  4.  *
  5.  *  COPYRIGHTS:
  6.  *             This module contains code made available by IBM
  7.  *             Corporation on an AS IS basis.  Any one receiving the
  8.  *             module is considered to be licensed under IBM copyrights
  9.  *             to use the IBM-provided source code in any way he or she
  10.  *             deems fit, including copying it, compiling it, modifying
  11.  *             it, and redistributing it, with or without
  12.  *             modifications.  No license under any IBM patents or
  13.  *             patent applications is to be implied from this copyright
  14.  *             license.
  15.  *
  16.  *             A user of the module should understand that IBM cannot
  17.  *             provide technical support for the module and will not be
  18.  *             responsible for any consequences of use of the program.
  19.  *
  20.  *             Any notices, including this one, are not to be removed
  21.  *             from the module without the prior written consent of
  22.  *             IBM.
  23.  *
  24.  *  AUTHOR:    Peter J. Schwaller
  25.  *             VNET:     PJS at RALVM6           Tie Line: 444-4376
  26.  *             Internet: pjs@ralvm6.vnet.ibm.com     (919) 254-4376
  27.  *
  28.  *  AVAILABILITY:
  29.  *             These sample programs and source are also available on
  30.  *             CompuServe through the APPC Information Exchange.  To get
  31.  *             to the APPC forum just type 'GO APPC' from any CompuServe
  32.  *             prompt.  The samples are available in the Sample Programs
  33.  *             library section.  Just search on the keyword CPICPGMS to
  34.  *             find all the samples in this series.
  35.  *
  36.  *             Updates for the sample programs and support for many more
  37.  *             CPI-C platforms will also be made available on CompuServe.
  38.  *
  39.  *  RELATED FILES:
  40.  *             CPICINIT.C
  41.  *
  42.  *****************************************************************************/
  43.  
  44. /*****************************************************************************
  45.  *
  46.  * OVERVIEW OF CPICINIT CALLS
  47.  *
  48.  * cpicinit_new()                     Creates a CPICINIT object.
  49.  *                                    This must be done before any other
  50.  *                                    cpicinit calls can be used.
  51.  *
  52.  * cpicinit_default_tp_name()         These calls set the initial values
  53.  * cpicinit_default_mode_name()       for CPICINIT parameters.  These should
  54.  * cpicinit_default_destination()     all be issued right after the CPICINIT
  55.  * cpicinit_default_sym_dest_name()   object is created.
  56.  *
  57.  * cpicinit_set_tp_name()             These calls also set the values for
  58.  * cpicinit_set_mode_name()           CPICINIT parameters.  These calls should
  59.  * cpicinit_set_destination()         be used to set values from user input
  60.  *                                    or profile values.
  61.  *
  62.  *   Security calls - only available where supported by CPI-C
  63.  * cpicinit_set_userid                Sets the userid for the conversation.
  64.  * cpicinit_set_passwd                Sets the password for the conversation.
  65.  * cpicinit_query_passwd_required     If a userid was set, then a password
  66.  *                                    is required.
  67.  * cpicinit_get_passwd                Let cpicinit prompt the user for a
  68.  *                                    password.
  69.  * cpicinit_set_security_none         Do not use any security on this conv.
  70.  *
  71.  * cpicinit_setup_conversation()      Handles all CMINIT and set calls.
  72.  *                                    Should be used by the calling program
  73.  *                                    instead of CMINIT.  See description
  74.  *                                    of the procedure for more details.
  75.  *
  76.  * cpicinit_destroy()                 Destroys the CPICINIT object.
  77.  *
  78.  * cpicinit_pln_valid()               These are internal calls used by
  79.  * cpicinit_mode_valid()              cpicinit_setup_conversation.
  80.  *
  81.  *****************************************************************************/
  82.  
  83. #ifndef INCL_CPICINIT
  84. #define INCL_CPICINIT
  85.  
  86. /*
  87.  * Collection of routines with special ported version for each platform
  88.  * The only thing that is used from CPICPORT.H is the correct setting
  89.  * of the SHORT_IDENTIFIERS identifier.
  90.  */
  91. #include "cpicport.h"
  92.  
  93. #if defined(SHORT_IDENTIFIERS)
  94. /*
  95.  * Some compilers require that identifiers be unique in the 1st 8 chars.
  96.  * Any new functions should be added to this list.
  97.  */
  98. #define cpicinit_new                      cinew
  99. #define cpicinit_default_tp_name          cidtp
  100. #define cpicinit_default_mode_name        cidmode
  101. #define cpicinit_default_destination      ciddest
  102. #define cpicinit_set_tp_name              cistp
  103. #define cpicinit_set_mode_name            cismode
  104. #define cpicinit_set_destination          cisdest
  105. #define cpicinit_default_sym_dest_name    cidsdn
  106. #define cpicinit_setup_conversation       cisc
  107. #define cpicinit_destroy                  cid
  108. #define cpicinit_pln_valid                cipv
  109. #define cpicinit_mode_valid               cimv
  110. #define cpicinit_set_userid               cisu
  111. #define cpicinit_set_passwd               cisp
  112. #define cpicinit_query_passwd_required    ciqpr
  113. #define cpicinit_get_passwd               cigp
  114. #endif
  115.  
  116. /* A string of 8 blanks is a special symbolic destination name.  We define   */
  117. /* this constant here rather than typing out 8 blanks within code.           */
  118. #define  BLANK_SYM_DEST_NAME     "        "
  119.  
  120.  
  121.  
  122.  
  123. /*
  124.  * This structure contains all of the information necessary to for all
  125.  * cpicinit calls.  The standard CPI-C destination and partner information
  126.  * is stored.  These values can be changed by the program through the
  127.  * use of cpicinit_default... and cpicinit_set... calls.
  128.  */
  129.  
  130. typedef struct cpicinit {
  131.     char          def_sym_dest_name[MAX_SYM_DEST_NAME];
  132.                                             /* Default symbolic dest name    */
  133.     char          tp_name[MAX_TP_NAME];     /* Transaction Program name      */
  134.     int           set_tp_name;              /* Was tp name set?              */
  135.     char          mode_name[MAX_MODE_NAME]; /* Mode name                     */
  136.     int           set_mode_name;            /* Was mode name set?            */
  137.     char          destination[MAX_FQPLU_NAME];
  138.                                             /* Destination - may be either   */
  139.                                             /* a sym dest name or a partner  */
  140.                                             /* lu name                       */
  141.     int           set_destination;          /* Was destination set?          */
  142.     char          userid[MAX_USERID];       /* Userid                        */
  143.     int           set_userid;               /* Was userid set?               */
  144.     char          passwd[MAX_PASSWD];       /* Password                      */
  145.     int           set_passwd;               /* Was password set?             */
  146.     int           security_none;            /* Was security=NONE specified?  */
  147.     int           show_error;               /* Should we show errors?        */
  148. } CPICINIT;
  149.  
  150.  
  151. /*
  152.  * Some of the fields in the CPICINIT object indicate whether another
  153.  * field has been set or not.  These fields will have one of the following
  154.  * values.  defines have been used to make the code more readable and to
  155.  * protect against the need to change these values in the future.
  156.  */
  157. #define  SET      1
  158. #define  NOT_SET  0
  159.  
  160.  
  161. /* function prototypes for this module */
  162.  
  163. /* create a new CPICINIT object */
  164. CPICINIT * cpicinit_new(void);
  165.  
  166. /* Initialize defaults for CPICINIT values */
  167. int cpicinit_default_tp_name(       CPICINIT *      cpicinit,
  168.                                     char *          tp_name);
  169. int cpicinit_default_mode_name(     CPICINIT *      cpicinit,
  170.                                     char *          mode_name);
  171. int cpicinit_default_destination(   CPICINIT *      cpicinit,
  172.                                     char *          destination);
  173. int cpicinit_default_sym_dest_name( CPICINIT *      cpicinit,
  174.                                     char *          def_sym_dest_name);
  175.  
  176. /* Set new values, based on user input or profile values */
  177. int cpicinit_set_tp_name(           CPICINIT *      cpicinit,
  178.                                     char *          tp_name);
  179. int cpicinit_set_mode_name(         CPICINIT *      cpicinit,
  180.                                     char *          mode_name);
  181. int cpicinit_set_destination(       CPICINIT *      cpicinit,
  182.                                     char *          destination);
  183. int cpicinit_set_userid(            CPICINIT *      cpicinit,
  184.                                     char *          userid);
  185. int cpicinit_set_passwd(            CPICINIT *      cpicinit,
  186.                                     char *          passwd);
  187. int cpicinit_query_passwd_required( CPICINIT *      cpicinit);
  188. void cpicinit_get_passwd(           CPICINIT *      cpicinit);
  189. void cpicinit_set_security_none(    CPICINIT * cpicinit);
  190.  
  191. /* This call will prepare the conversation id for the Allocate call */
  192. int cpicinit_setup_conversation(    CPICINIT *      cpicinit,
  193.                                     unsigned char * cm_conv_id,
  194.                                     CPICERR *       cpicerr);
  195.  
  196. /* destroys the CPICINIT object created with cpicinit_new() */
  197. void cpicinit_destroy(              CPICINIT *      cpicinit);
  198.  
  199. /* Internal routines */
  200. int cpicinit_pln_valid(             unsigned char * cm_conv_id);
  201. int cpicinit_mode_valid(            unsigned char * cm_conv_id);
  202.  
  203. #endif
  204.